{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Demo"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "using MatrixDepot\n",
    "using PyPlot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Basic\n",
    "\n",
    "display all the matrices in the collection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Matrices:\n",
      "   1) baart            2) binomial         3) cauchy           4) chebspec      \n",
      "   5) chow             6) circul           7) clement          8) deriv2        \n",
      "   9) dingdong        10) fiedler         11) forsythe        12) foxgood       \n",
      "  13) frank           14) grcar           15) hadamard        16) heat          \n",
      "  17) hilb            18) invhilb         19) invol           20) kahan         \n",
      "  21) kms             22) lehmer          23) lotkin          24) magic         \n",
      "  25) minij           26) moler           27) neumann         28) oscillate     \n",
      "  29) parter          30) pascal          31) pei             32) phillips      \n",
      "  33) poisson         34) prolate         35) randcorr        36) rando         \n",
      "  37) randsvd         38) rohess          39) rosser          40) sampling      \n",
      "  41) shaw            42) toeplitz        43) tridiag         44) triw          \n",
      "  45) vand            46) wathen          47) wilkinson       48) wing          \n",
      "\n",
      "Groups:\n",
      "  data          eigen         ill-cond      inverse     \n",
      "  pos-def       random        regprob       sparse      \n",
      "  symmetric   \n"
     ]
    }
   ],
   "source": [
    "matrixdepot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "show all the ``symmetric`` and ``pos-def`` matrices in the collection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14-element Array{ASCIIString,1}:\n",
       " \"hilb\"     \n",
       " \"cauchy\"   \n",
       " \"circul\"   \n",
       " \"invhilb\"  \n",
       " \"moler\"    \n",
       " \"pascal\"   \n",
       " \"pei\"      \n",
       " \"minij\"    \n",
       " \"tridiag\"  \n",
       " \"lehmer\"   \n",
       " \"poisson\"  \n",
       " \"kms\"      \n",
       " \"wathen\"   \n",
       " \"oscillate\""
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "matrixdepot(\"symmetric\", \"pos-def\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Magic square matrix:\n",
      "             \n",
      " Input options:\n",
      "             \n",
      " [type,] dim: the dimension of the matrix.\n",
      "             \n",
      " ['inverse']\n"
     ]
    }
   ],
   "source": [
    "matrixdepot(\"magic\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5x5 Array{Int64,2}:\n",
       " 17  24   1   8  15\n",
       " 23   5   7  14  16\n",
       "  4   6  13  20  22\n",
       " 10  12  19  21   3\n",
       " 11  18  25   2   9"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = matrixdepot(\"magic\", 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5x5 Array{Float32,2}:\n",
       " 17.0  24.0   1.0   8.0  15.0\n",
       " 23.0   5.0   7.0  14.0  16.0\n",
       "  4.0   6.0  13.0  20.0  22.0\n",
       " 10.0  12.0  19.0  21.0   3.0\n",
       " 11.0  18.0  25.0   2.0   9.0"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "matrixdepot(\"magic\", Float32, 5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A **magic square** is an arrangement of ``n^2`` distinct numbers in a ``n-by-n`` square matrix such that the numbers in each row, each column, and the numbers on the diagonal and anti-diagonal all add up to the same number."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1x5 Array{Int64,2}:\n",
       " 65  65  65  65  65"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sum(A,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5x1 Array{Int64,2}:\n",
       " 65\n",
       " 65\n",
       " 65\n",
       " 65\n",
       " 65"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sum(A,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "65"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sum(diag(A))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "65"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p = [5:-1:1]\n",
    "sum(diag(A[:,p]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "iVBORw0KGgoAAAANSUhEUgAAAfMAAAH8CAYAAADFWUaeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGDBJREFUeJzt3X+M1fW95/H3jKOIUKKOJc5oSigqXnEUMQjSxsawXUUDNqswsgFl18j+IRDEpsYVcbtUbzW2ojubGoyZos4SE6xXMPfW1Kq1axCNP1pri2AqzMIMClNBkF+Ks394pSBWzhnmzNf3zOORzD+fcw7fV4zhOefM4UxVZ2dnZwAAaVUXPQAAODJiDgDJiTkAJCfmAJCcmANAcmIOAMmJOQAkJ+YAkJyYA0ByYg4AyYn5F+zZsyduvvnmqK+vj+OOOy7Gjh0bzzzzTNGzeq2PPvoobr/99rj00kvjxBNPjOrq6liyZEnRs3q1V155JWbNmhUjRoyIgQMHxpAhQ6KxsTHWrl1b9LRe66233orJkyfHsGHDYsCAAVFbWxvjxo2LlpaWoqf1GXfccUdUV1dHQ0ND0VMqoqboAV83M2bMiMcffzxuvPHGOP3006O5uTkuu+yyeO655+I73/lO0fN6nc2bN8fChQtjyJAhMXLkyHj++eejqqqq6Fm92l133RUrV66MyZMnxznnnBPt7e3R1NQUo0aNipdeeilGjBhR9MRep7W1NXbs2BEzZsyI+vr62LlzZyxbtiymT58e69ati1tvvbXoib3ahg0b4s4774wBAwb02r9fqvyilb97+eWXY+zYsXHPPffEvHnzIuKzZ+pnn312DB48OF588cWCF/Y+e/fuja1bt8bgwYPj1VdfjdGjR8cvf/nLuOaaa4qe1mutXLkyRo8eHTU1f/9e/p133omGhoa46qqr4pFHHilwXd/x6aefxvnnnx9/+9vfYv369UXP6dWuvvrq6OjoiE8++SS2bNkSb775ZtGTup2X2Q+wbNmyqKmpiZkzZ+4/69evX1x33XWxcuXK2LhxY4HreqdjjjkmBg8eHBERvq/sGRdeeOFBIY+IOO200+Kss86K1atXF7Sq76muro5TTz01jj766KKn9GovvPBCPP7447Fo0aLo7Ozstc/Mvcx+gNdffz3OOOOMGDhw4EHno0ePjoiIN954I0455ZQipkFFdXZ2xnvvvddrf574dbFz587YuXNnbNu2LZYvXx5PP/10NDU1FT2r19q3b1/Mnj07rr/++l7/4yMxP0B7e3vU1dUdcv75WVtbW09Pgh7R0tISbW1t8ZOf/KToKb3avHnzYvHixRERUVNTE/fff/9BrwTSvR544IFobW2NZ599tugpFSfmB9i1a1f069fvkPNjjz12/+3Q26xevTpuuOGGGDduXFx77bVFz+nVbrzxxpgyZUq0tbVFS0tLzJo1K/r37++/ewV0dHTEggULYsGCBVFbW1v0nIoT8wP0798/9uzZc8j57t27998OvcmmTZvi8ssvjxNOOCGWLVvWa3+e+HUxfPjwGD58eERETJs2LS655JKYO3duTJkyxd8v3Wz+/Plx0kknxezZs4ue0iO8Ae4AdXV1X/pSent7e0RE1NfX9/QkqJht27bFhAkT4sMPP4xf//rXcfLJJxc9qc+58sorY9u2bfH2228XPaVXWbt2bTz44IMxe/bs2LBhQ6xbty7WrVsXu3fvjr1798b69evjgw8+KHpmtxLzA5x33nmxZs2a2L59+0Hnq1atioiIkSNHFjELut3u3btj4sSJ8c4778RTTz0VZ555ZtGT+qTPf3RXXe2v4u60cePG+PTTT2POnDnx7W9/e//Xyy+/HGvWrImhQ4fGwoULi57ZrbzMfoCrrroq7rnnnli8eHHcdNNNEfHZvzNvbm6OsWPHeic7vcK+ffuisbExVq1aFU8++WSMGTOm6Em93ubNm+Ob3/zmQWcff/xxPPzww1FbW9vr32nd0xoaGuKJJ5446MdGnZ2dMX/+/NixY0fcd999MWzYsAIXdj8xP8AFF1wQkydPjltuuSXef//9GDZsWCxZsiRaW1ujubm56Hm9VlNTU2zdunX/jziWL18era2tERExZ86cGDRoUJHzep2bbropVqxYERMnTowtW7bEo48+etDt06ZNK2hZ7zVz5szYvn17XHTRRVFfXx+bNm2KlpaWWLNmTTQ3N8dRRx1V9MRepba2Nq644opDzu+9996IiJg0aVJPT6o4nwD3BXv27InbbrstHn300fjggw/i3HPPjYULF8b3v//9oqf1WkOHDt3/CViffyf9+Yc7vPvuu/Gtb32ryHm9zsUXXxwvvPDCl35IT1VVVezbt6+AVb3bY489Fg899FC8+eab0dHREYMGDYoxY8bEvHnzYvz48UXP6zMuvvji6OjoiD/+8Y9FT+l2Yg4AyXnXBQAkJ+YAkJyYA0ByYg4AyYk5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"
      ],
      "text/plain": [
       "Figure(PyObject <matplotlib.figure.Figure object at 0xbea8410>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "PyObject <matplotlib.image.AxesImage object at 0xce28d10>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "matshow(A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12x12 Tridiagonal{Float64}:\n",
       " 5.5  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0\n",
       " 1.0  4.5  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0\n",
       " 0.0  1.0  3.5  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0\n",
       " 0.0  0.0  1.0  2.5  1.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0\n",
       " 0.0  0.0  0.0  1.0  1.5  1.0  0.0  0.0  0.0  0.0  0.0  0.0\n",
       " 0.0  0.0  0.0  0.0  1.0  0.5  1.0  0.0  0.0  0.0  0.0  0.0\n",
       " 0.0  0.0  0.0  0.0  0.0  1.0  0.5  1.0  0.0  0.0  0.0  0.0\n",
       " 0.0  0.0  0.0  0.0  0.0  0.0  1.0  1.5  1.0  0.0  0.0  0.0\n",
       " 0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  2.5  1.0  0.0  0.0\n",
       " 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  3.5  1.0  0.0\n",
       " 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  4.5  1.0\n",
       " 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.0  5.5"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B = matrixdepot(\"wilkinson\", 12)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "iVBORw0KGgoAAAANSUhEUgAAAfwAAAH8CAYAAAA0Uh0TAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAHx1JREFUeJzt3XuQ1eV9x/HPAnIJiJVVYNfUK/GGS0VF0VpLm2aKGtSpF4YZL42XTI1KLk3i1LFIpZiLyYRE/0BMoiSNVgPRVjJlHIw2VbkpakiNBadRuawoxgsqi1xO/7DQICy70LOcA8/rNcMfPufyfPm58N7f2cP5NVQqlUoAgL1at1oPAAB0PcEHgAIIPgAUQPABoACCDwAFEHwAKIDgA0ABBB8ACiD4AFAAwQeAAuw1wV+3bl2uv/76NDc352Mf+1hGjhyZOXPm1HqsurZw4cJce+21GTp0aPr165dDDjkkY8eOzdKlS2s92h5l8uTJ6datW1paWmo9Sl1btGhRzjnnnDQ2NqZv375paWnJbbfdVuux6tpTTz2Vc889N83Nzenbt2+OOeaYTJo0KWvXrq31aHXhvffey0033ZTRo0dnwIAB6datW6ZPn77d+/7mN7/J6NGjs++++6axsTGXXnppVq9evZsnrq2GveWz9MeNG5eZM2fmi1/8Yj7xiU/krrvuysKFC/Poo4/mj//4j2s9Xl264IILMnfu3Fx44YUZNmxYWltbc/vtt+fdd9/NvHnzMnTo0FqPWPeWL1+eo446Kt26dcthhx2WX/3qV7UeqS49/PDDGTNmTE488cSMHTs2/fr1y4svvphKpZKvf/3rtR6vLi1evDgjRoxIc3Nz/uZv/iYDBgzIk08+mbvvvjvnnHNOHnzwwVqPWHMvvfRSDj/88BxyyCE57LDD8thjj+Xuu+/OpZdeutX9li9fnuHDh2f//ffP+PHjs2bNmnzrW9/KwQcfnAULFmSfffap0e9gN6vsBebPn19paGiofPvb396y1tbWVhkyZEjltNNOq+Fk9e3JJ5+srF+/fqu1pUuXVnr37l25+OKLazTVnmXs2LGVv/iLv6iMGjWqctxxx9V6nLr09ttvVwYNGlQ5//zzaz3KHuWGG26oNDQ0VJ5//vmt1i+77LJKQ0ND5a233qrRZPVj3bp1lVWrVlUqlUrlqaeeqjQ0NFSmT5++zf2uvvrqSt++fSvLli3bsjZnzpxKQ0NDZdq0abtt3lrbK17SnzFjRnr06JHPfvazW9Z69eqVK664InPnzs2KFStqOF39OvXUU9OjR4+t1oYMGZJjjz02L7zwQo2m2nP88pe/zMyZMzNlypRUKpU0NDTUeqS6dM899+S1117L5MmTk3z4MuymTZtqPFX969OnT5Jk4MCBW60PHjw43bt3T8+ePWsxVl3p2bPnluNT2cGL1TNnzsynP/3pfPzjH9+y9slPfjJHHnlk7r///i6fs17sFcF/5plncuSRR6Zfv35brY8YMSJJ8uyzz9ZirD1SpVLJqlWrcsABB9R6lLq2cePGXHfddbnqqqv86KMDc+bMSf/+/bNs2bIcddRR2XfffbPffvvlc5/7XNatW1fr8erW5ZdfnkGDBuWKK67Ic889l2XLluW+++7L1KlTM378+C3fELBjK1asyOuvv56TTjppm9tGjBiRZ555pgZT1UaPju9S/1pbW9PU1LTN+ua1lStX7u6R9lg/+clPsnLlyvzjP/5jrUepa1OnTs0rr7ySX/ziF7Uepe4tXbo0GzZsyHnnnZcrr7wy3/jGN/Loo4/mtttuy1tvvZV77rmn1iPWpebm5jzxxBM566yzMnz48C3rN954Y26++eYaTrZnaW1tTZJ2G/G73/0u69evL+Ln+HtF8NeuXZtevXpts967d+8tt9OxF154Iddcc01OO+20XHbZZbUep2698cYbmTBhQiZMmJDGxsZaj1P33n333bz//vu5+uqrM2XKlCTJeeedlw8++CB33HFHbr755gwZMqTGU9afVatW5cwzz0yS3HnnnWlsbMysWbMyefLkDBo0KNdcc02NJ9wzbP77v6NGCP4eok+fPtt9abCtrW3L7ezYq6++mrPPPjv7779/ZsyY4efRO3DjjTfmgAMOyHXXXVfrUfYIm//8jRs3bqv1cePG5Y477si8efMEfzsmTZqUFStWZMmSJWlubk7y4TdKmzZtyvXXX59x48ZlwIABNZ6y/m3++tOIveRn+E1NTdt92X7zSzmb/7CwfW+//XbOPPPMvPPOO5k9e3YGDx5c65Hq1tKlS3PnnXfmuuuuy/Lly/PSSy/lpZdeSltbWz744IO8/PLLefPNN2s9Zl3Z/Odv0KBBW61vfrOV47V9jz/+eIYPH77N319jxozJ+++/771JnbT5pfzNPfh9ra2taWxsLOLsPtlLgj98+PAsWbIka9as2Wp9/vz5SZLjjz++FmPtEdra2jJmzJi8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"
      ],
      "text/plain": [
       "Figure(PyObject <matplotlib.figure.Figure object at 0xbecbf10>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "PyObject <matplotlib.image.AxesImage object at 0xd475e10>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "matshow(full(B))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6x6 Array{Bool,2}:\n",
       "  true  false  false  false   true   true\n",
       " false  false  false  false  false  false\n",
       "  true   true   true   true  false  false\n",
       " false  false  false   true  false   true\n",
       "  true   true  false  false   true   true\n",
       "  true  false   true   true  false   true"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "matrixdepot(\"rando\", Bool, 6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We set the precision of ``BigFloat`` and generate matrices of arbitrary precision."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5x5 Array{BigFloat,2}:\n",
       " 1e+00                                                                …  2.0000000000000000000000000000000000000000000000000000000000003e-01\n",
       " 5e-01                                                                   1.6666666666666666666666666666666666666666666666666666666666672e-01\n",
       " 3.3333333333333333333333333333333333333333333333333333333333344e-01     1.428571428571428571428571428571428571428571428571428571428571e-01 \n",
       " 2.5e-01                                                                 1.25e-01                                                           \n",
       " 2.0000000000000000000000000000000000000000000000000000000000003e-01     1.1111111111111111111111111111111111111111111111111111111111115e-01"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set_bigfloat_precision(200)\n",
    "H = matrixdepot(\"hilb\", BigFloat, 5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Polar Decomposition\n",
    "\n",
    "``PolarFact`` is a Julia package for computing the matrix polar decomposition. It includes algorithms like Newton's method (``:newton``), the QDWH method (``:qdwh``), a hybrid Newton's method (``:hybrid``) and the\n",
    "Halley method (``:halley``).\n",
    "\n",
    "We can use Matrix Depot to compare the performance of these algorithms."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO: Cloning cache of PolarFact from git://github.com/weijianzhang/PolarFact.jl.git\n",
      "INFO: Installing PolarFact v0.0.5\n",
      "INFO: Package database updated\n"
     ]
    }
   ],
   "source": [
    "Pkg.add(\"PolarFact\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "using PolarFact"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Compare the number of iterations of four polar decomposition algorithms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "n = length(matrixdepot(\"inverse\", \"symmetric\"))\n",
    "niters = zeros(4, n)\n",
    "for (i,mat) in enumerate(matrixdepot(\"inverse\", \"symmetric\"))\n",
    "    A = matrixdepot(mat, Float64, 12)\n",
    "    A = full(A)\n",
    "    r_newton = polarfact(A, alg = :newton)\n",
    "    r_qdwh = polarfact(A, alg = :qdwh)\n",
    "    r_hybird = polarfact(A, alg = :hybrid)\n",
    "    r_halley = polarfact(A, alg = :halley)\n",
    "    niters[1, i] = r_newton.niters\n",
    "    niters[2, i] = r_qdwh.niters\n",
    "    niters[3, i] = r_hybird.niters\n",
    "    niters[4, i] = r_halley.niters\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Figure(PyObject <matplotlib.figure.Figure object at 0xbea2c90>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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"
      ],
      "text/plain": [
       "Figure(PyObject <matplotlib.figure.Figure object at 0xd4fc690>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "PyObject <matplotlib.legend.Legend object at 0xd52f350>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plt.figure()\n",
    "for i in 1:4\n",
    "    x = [1:n]\n",
    "    y = niters[i,:][:]\n",
    "    plt.plot(x,y, \".-\")\n",
    "    plt.hold(\"on\")\n",
    "end\n",
    "plt.xlabel(\"test matrices\")\n",
    "plt.ylabel(\"number of iterations\")\n",
    "plt.legend([\"newton\", \"qdwh\", \"hybird\", \"halley\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Interface to UF Sparse Matrix Collection and Matrix Market "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We first run ``MatrixDepot.update()``, which download two html matrix name lists.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n",
      "                                 Dload  Upload   Total   Spent    Left  Speed\n",
      "100 1808k    0 1808k    0     0   521k      0 --:--:--  0:00:03 --:--:--  521k\n"
     ]
    }
   ],
   "source": [
    "MatrixDepot.update()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Matrix Depot first check if the matrix is on the matrix data list before downloading it. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "LoadError",
     "evalue": "LoadError: can not find Collection/somematrix in UF sparse matrix collection\nwhile loading In[5], in expression starting on line 1",
     "output_type": "error",
     "traceback": [
      "LoadError: can not find Collection/somematrix in UF sparse matrix collection\nwhile loading In[5], in expression starting on line 1",
      "",
      " in error at ./error.jl:21",
      " in get at /home/weijian/.julia/v0.4/MatrixDepot/src/download.jl:149",
      " in matrixdepot at /home/weijian/.julia/v0.4/MatrixDepot/src/common.jl:227"
     ]
    }
   ],
   "source": [
    "matrixdepot(\"Collection/somematrix\", :get)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>HB/1138_bus (undirected graph drawing, UF Sparse Matrix Collection, Tim Davis and Yifan Hu)</p>\n",
    "<img src=\"files/1138_bus.jpg\">"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "download:/home/weijian/.julia/v0.4/MatrixDepot/data/uf/HB/1138_bus.tar.gz\n",
      "1138_bus/1138_bus.mtx\n"
     ]
    }
   ],
   "source": [
    "matrixdepot(\"HB/1138_bus\", :get)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Matrices:\n",
      "   1) baart            2) binomial         3) cauchy           4) chebspec      \n",
      "   5) chow             6) circul           7) clement          8) deriv2        \n",
      "   9) dingdong        10) fiedler         11) forsythe        12) foxgood       \n",
      "  13) frank           14) grcar           15) hadamard        16) heat          \n",
      "  17) hilb            18) invhilb         19) invol           20) kahan         \n",
      "  21) kms             22) lehmer          23) lotkin          24) magic         \n",
      "  25) minij           26) moler           27) neumann         28) oscillate     \n",
      "  29) parter          30) pascal          31) pei             32) phillips      \n",
      "  33) poisson         34) prolate         35) randcorr        36) rando         \n",
      "  37) randsvd         38) rohess          39) rosser          40) sampling      \n",
      "  41) shaw            42) toeplitz        43) tridiag         44) triw          \n",
      "  45) vand            46) wathen          47) wilkinson       48) wing          \n",
      "  49) HB/1138_bus   \n",
      "Groups:\n",
      "  data          eigen         ill-cond      inverse     \n",
      "  pos-def       random        regprob       sparse      \n",
      "  symmetric   \n"
     ]
    }
   ],
   "source": [
    "matrixdepot() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "%%MatrixMarket matrix coordinate real symmetric\n",
      "%-------------------------------------------------------------------------------\n",
      "% UF Sparse Matrix Collection, Tim Davis\n",
      "% http://www.cise.ufl.edu/research/sparse/matrices/HB/1138_bus\n",
      "% name: HB/1138_bus\n",
      "% [S ADMITTANCE MATRIX 1138 BUS POWER SYSTEM, D.J.TYLAVSKY, JULY 1985.]\n",
      "% id: 1\n",
      "% date: 1985\n",
      "% author: D. Tylavsky\n",
      "% ed: I. Duff, R. Grimes, J. Lewis\n",
      "% fields: title A name id date author ed kind\n",
      "% kind: power network problem\n",
      "%-------------------------------------------------------------------------------\n",
      "\n",
      "use matrixdepot(\"HB/1138_bus\", :read) to read the data\n"
     ]
    }
   ],
   "source": [
    "matrixdepot(\"HB/1138_bus\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1138x1138 sparse matrix with 4054 Float64 entries:\n",
       "\t[1   ,    1]  =  1474.78\n",
       "\t[5   ,    1]  =  -9.01713\n",
       "\t[563 ,    1]  =  -5.73066\n",
       "\t[2   ,    2]  =  9.13665\n",
       "\t[10  ,    2]  =  -3.40599\n",
       "\t[563 ,    2]  =  -5.73066\n",
       "\t[3   ,    3]  =  69.6147\n",
       "\t[11  ,    3]  =  -8.81057\n",
       "\t[34  ,    3]  =  -31.1527\n",
       "\t[35  ,    3]  =  -16.0668\n",
       "\t⋮\n",
       "\t[1134, 1134]  =  10000.0\n",
       "\t[1124, 1135]  =  -10.7411\n",
       "\t[1129, 1135]  =  -15.8228\n",
       "\t[1135, 1135]  =  26.5639\n",
       "\t[1122, 1136]  =  -21.7865\n",
       "\t[1131, 1136]  =  -24.3902\n",
       "\t[1136, 1136]  =  46.1767\n",
       "\t[802 , 1137]  =  -10000.0\n",
       "\t[1137, 1137]  =  10000.0\n",
       "\t[805 , 1138]  =  -117.647\n",
       "\t[1138, 1138]  =  117.647"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = matrixdepot(\"HB/1138_bus\", :r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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"
      ],
      "text/plain": [
       "Figure(PyObject <matplotlib.figure.Figure object at 0x8dd6b10>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "PyObject <matplotlib.image.AxesImage object at 0x7f30ca832150>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spy(A)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "show all the downloaded matrices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1-element Array{AbstractString,1}:\n",
       " \"HB/1138_bus\""
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "matrixdepot(\"data\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Define a new group for a paper"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "99"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@addgroup paper1_test = [\"HB/1138_bus\", \"hilb\", \"cauchy\", \"pei\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{ASCIIString,1}:\n",
       " \"HB/1138_bus\"\n",
       " \"hilb\"       \n",
       " \"cauchy\"     \n",
       " \"pei\"        "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "matrixdepot(\"paper1_test\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 0.4.0-dev",
   "language": "julia",
   "name": "julia-0.4"
  },
  "language_info": {
   "name": "julia",
   "version": "0.4.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
